package syntaxAnalysis.core;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import syntaxAnalysis.util.Position;


public class PredicateParsingTable {
	private Map<Position,String> content;

	public PredicateParsingTable() {
		this.content = new HashMap<>();
	}
	
	 public void set(String row,String col,String value){
		 content.put(new Position(row, col), value);
	 }
	 
	 public String get(String row,String column){
		 String[] result=new String[1];
		 content.forEach((k,v)->{
			  if(column.equals(k.getColumn())&&(row.equals(k.getRow()))){
				  result[0]=v;
			  }
		 });
		 
		 return result[0];
	 }
	 
	 public void print(){
		 Set<String> column=new HashSet<>();
		 Set<String> row=new HashSet<>();
		 content.forEach((k,v)->{
			  column.add(k.getColumn());
			  row.add(k.getRow());
		 });
		 String[] arrayColumn=column.toArray(new String[column.size()]);
		 String[] arrayRow=row.toArray(new String[row.size()]);
		 for(int i=0;i<arrayColumn.length;i++){
			 System.out.print("	"+arrayColumn[i]);
		 }
		 for(int j=0;j<arrayRow.length;j++){
			 System.out.println();
			 System.out.print(arrayRow[j]);
			 for(int i=0;i<arrayColumn.length;i++){
				 System.out.print("	"+get(arrayRow[j],arrayColumn[i]));
			 }
			 
		 }
	 }
	
}
